Changeset f817d3a in mainline for kernel/arch/ppc32/src/drivers/pic.c


Ignore:
Timestamp:
2009-01-29T17:24:35Z (16 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
43d6401
Parents:
26c67a8
Message:

use macio optionally

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ppc32/src/drivers/pic.c

    r26c67a8 rf817d3a  
    3939#include <bitops.h>
    4040
    41 static volatile uint32_t *pic;
     41static volatile uint32_t *pic = NULL;
    4242
    4343void pic_init(uintptr_t base, size_t size)
     
    4848void pic_enable_interrupt(int intnum)
    4949{
    50         if (intnum < 32) {
    51                 pic[PIC_MASK_LOW] = pic[PIC_MASK_LOW] | (1 << intnum);
    52         } else {
    53                 pic[PIC_MASK_HIGH] = pic[PIC_MASK_HIGH] | (1 << (intnum - 32));
     50        if (pic) {
     51                if (intnum < 32)
     52                        pic[PIC_MASK_LOW] = pic[PIC_MASK_LOW] | (1 << intnum);
     53                else
     54                        pic[PIC_MASK_HIGH] = pic[PIC_MASK_HIGH] | (1 << (intnum - 32));
    5455        }
    5556       
     
    5859void pic_disable_interrupt(int intnum)
    5960{
    60         if (intnum < 32) {
    61                 pic[PIC_MASK_LOW] = pic[PIC_MASK_LOW] & (~(1 << intnum));
    62         } else {
    63                 pic[PIC_MASK_HIGH] = pic[PIC_MASK_HIGH] & (~(1 << (intnum - 32)));
     61        if (pic) {
     62                if (intnum < 32)
     63                        pic[PIC_MASK_LOW] = pic[PIC_MASK_LOW] & (~(1 << intnum));
     64                else
     65                        pic[PIC_MASK_HIGH] = pic[PIC_MASK_HIGH] & (~(1 << (intnum - 32)));
    6466        }
    6567}
     
    6769void pic_ack_interrupt(int intnum)
    6870{
    69         if (intnum < 32)
    70                 pic[PIC_ACK_LOW] = 1 << intnum;
    71         else
    72                 pic[PIC_ACK_HIGH] = 1 << (intnum - 32);
     71        if (pic) {
     72                if (intnum < 32)
     73                        pic[PIC_ACK_LOW] = 1 << intnum;
     74                else
     75                        pic[PIC_ACK_HIGH] = 1 << (intnum - 32);
     76        }
    7377}
    7478
     
    7680int pic_get_pending(void)
    7781{
    78         int pending;
    79 
    80         pending = pic[PIC_PENDING_LOW];
    81         if (pending)
    82                 return fnzb32(pending);
    83        
    84         pending = pic[PIC_PENDING_HIGH];
    85         if (pending)
    86                 return fnzb32(pending) + 32;
     82        if (pic) {
     83                int pending;
     84               
     85                pending = pic[PIC_PENDING_LOW];
     86                if (pending)
     87                        return fnzb32(pending);
     88               
     89                pending = pic[PIC_PENDING_HIGH];
     90                if (pending)
     91                        return fnzb32(pending) + 32;
     92        }
    8793       
    8894        return -1;
Note: See TracChangeset for help on using the changeset viewer.