Skip to contentSkip to conversation

Custom kernel crashes

DISCUSSION Thomas Petazzoni 2 participants 6 messages Nov 2, 2004 MIPS

lore
Share & tools
lore
#0 lore raw

Hello,

I've modified the Linux MIPS CVS kernel to support my board. Modification include platform initialization, serial driver and ethernet driver.

When I leave the system alone for a while, it crashes with the error seen in the attached file. It crashes with a Bus error, but I don't know where the bus error occurs. epc and ra respectively points to do_be() and handle_dbe_int(), but I don't get any backtrace, because stack address 0xfe040000 is already the end of the end stack ;(

How can I know to what process 0xfe040000 stack address correspond ? How can I have more information on what happened ?

I suspect it's a bug in my serial driver, because of the strange characters displayed before "us error", but I'm not sure. I just need advices to be able to debug this problem.

Thanks for your help,

Thomas

Signature · 4 lines
PETAZZONI Thomas - [email protected]
http://thomas.enix.org - Jabber: [email protected]
KOS: http://kos.enix.org/ - Lolut: http://lolut.utbm.info
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7

# QX�X�us error, epc == 8020c878, ra == 80206708 Oops in arch/mips/kernel/traps.c::do_be, line 333[#1]:
Stack (0xfe040000) (0x0) Stack:
----------------Call Trace (0xfe040000) (0x1):
Infos: 0xfe040000 - 1

Cpu 0

$ 0   : 00000000 00000000 bb001b00 00000000
$ 4   : fe040030 fe07fe20 00000000 ffffffff
$ 8   : 9000ff00 1000001f 9000ff00 00000000
$12   : 00000000 00000000 00000000 00000000
$16   : fe07fe20 fe040030 00000000 00000000
$20   : 00000000 00000000 00000000 00000000
$24   : 00000000 4187a897
$28   : fe040000 fe040000 00000000 80206708
Hi    : 00000000
Lo    : 00000000
epc   : 8020c878 do_be+0x1c/0x13c     Not tainted
ra    : 80206708 handle_dbe_int+0x20/0x38
Status: 9000ff02    KERNEL EXL
Cause : 0000841c
PrId  : 00003430
Modules linked in:
CPU 0 Unable to handle kernel paging request at virtual address 00000074, epc == 80214520, ra == 8021688c
Oops in arch/mips/mm/fault.c::do_page_fault, line 166[#2]:
Stack (0xfe0020d0) (0xd0) Stack:  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
        00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
        00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
        00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
        00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
        ...
----------------Call Trace (0xfe0020d0) (0x0):
Infos: 0xfe0020d0 - 0
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360

Cpu 0

$ 0   : 00000000 9000ff00 00030001 00000000
$ 4   : fe002198 00000000 00000074 fe03e000
$ 8   : 9000ff00 1000001e 00000003 803eb10c
$12   : 00000000 00000000 fffffffe ffffffff
$16   : 00000000 80376ef8 fe03ff50 00000004
$20   : 00000000 00000000 00000000 00000000
$24   : 00000010 00000003
$28   : fe002000 fe0020d0 00000000 8021688c
Hi    : 00000240
Lo    : 000001f8
epc   : 80214520 do_page_fault+0x40/0x360     Not tainted
ra    : 8021688c nopage_tlbl+0xf0/0x104
Status: 9000ff02    KERNEL EXL
Cause : 00008408
BadVA : 00000000
PrId  : 00003430
Modules linked in:
Data bus error, epc == 802ce6d8, ra == 802cf58c
Oops in arch/mips/kernel/traps.c::do_be, line 333[#3]:
Stack (0xfe001e70) (0xe70) Stack:  00000400 fe001efc 9000ff00 ffffed6a 9000ff00 0000000a 80229464 00000000
        00000400 fe001f1c 9000ff00 00000000 0000002c 00000000 00000000 00000000
        802cf774 80229198 00000020 fe0020b8 80376eb1 803a343c 80376ea8 80229198
        0000002c 00000000 00000000 80229120 fe002020 803778e0 fe002020 00000000
        0000002c 00000000 00000000 80229120 00000000 c0000000 fe002020 803778e0
        ...
----------------Call Trace (0xfe001e70) (0x0):
Infos: 0xfe001e70 - 0
 [<80229464>] release_console_sem+0x88/0x158
 [<802cf774>] vscnprintf+0x14/0x30
 [<80229198>] vprintk+0x6c/0x218
 [<80229198>] vprintk+0x6c/0x218
 [<80229120>] printk+0x1c/0x28
 [<80229120>] printk+0x1c/0x28
 [<8020c6e4>] show_registers+0x58/0x7c
 [<8020c6bc>] show_registers+0x30/0x7c
 [<80206708>] handle_dbe_int+0x20/0x38
 [<8020c7bc>] __die+0xb4/0xcc
 [<8021464c>] do_page_fault+0x16c/0x360
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104

Cpu 0

$ 0   : 00000000 9000ff00 ffffffff fe04016a
$ 4   : fe04016a fffffffe 80376eb1 fe001f1c
$ 8   : ffffffff 0000000a 00000003 803eb10c
$12   : 00000000 00000000 fffffffe ffffffff
$16   : 803eb104 fe04016a 803eb4fb 00000000
$20   : fe001f1c ffffffff 803eb0fc 00000400
$24   : 00000010 00000003
$28   : fe002000 fe001e70 00000000 802cf58c
Hi    : 00000240
Lo    : 000001f8
epc   : 802ce6d8 strnlen+0x10/0x40     Not tainted
ra    : 802cf58c vsnprintf+0x46c/0x640
Status: 9000ff02    KERNEL EXL
Cause : 0000841c
PrId  : 00003430
Modules linked in:
#1 lore raw

Hello Thomas !

This may or may not apply to your case. Is this board still the one that has the Marvell Discovery ethernet device? If yes, Marvell Discovery has its SRAM located at 0xfe000000. So, make a check in the ethernet driver or other board specific sources and see if there is any access to this SRAM location.

Thanks
Manish Lachwani

Quoted 174 lines · Thomas Petazzoni

Hello,

I've modified the Linux MIPS CVS kernel to support my board. Modification include platform initialization, serial driver and ethernet driver.

When I leave the system alone for a while, it crashes with the error seen in the attached file. It crashes with a Bus error, but I don't know where the bus error occurs. epc and ra respectively points to do_be() and handle_dbe_int(), but I don't get any backtrace, because stack address 0xfe040000 is already the end of the end stack ;(

How can I know to what process 0xfe040000 stack address correspond ? How can I have more information on what happened ?

I suspect it's a bug in my serial driver, because of the strange characters displayed before "us error", but I'm not sure. I just need advices to be able to debug this problem.

Thanks for your help,

Thomas

------------------------------------------------------------------------

# QXºX±us error, epc == 8020c878, ra == 80206708 Oops in arch/mips/kernel/traps.c::do_be, line 333[#1]:
Stack (0xfe040000) (0x0) Stack:
----------------Call Trace (0xfe040000) (0x1):
Infos: 0xfe040000 - 1

Cpu 0

$ 0   : 00000000 00000000 bb001b00 00000000
$ 4   : fe040030 fe07fe20 00000000 ffffffff
$ 8   : 9000ff00 1000001f 9000ff00 00000000
$12   : 00000000 00000000 00000000 00000000
$16   : fe07fe20 fe040030 00000000 00000000
$20   : 00000000 00000000 00000000 00000000
$24   : 00000000 4187a897
$28   : fe040000 fe040000 00000000 80206708
Hi    : 00000000
Lo    : 00000000
epc   : 8020c878 do_be+0x1c/0x13c     Not tainted
ra    : 80206708 handle_dbe_int+0x20/0x38
Status: 9000ff02    KERNEL EXL
Cause : 0000841c
PrId  : 00003430
Modules linked in:
CPU 0 Unable to handle kernel paging request at virtual address 00000074, epc == 80214520, ra == 8021688c
Oops in arch/mips/mm/fault.c::do_page_fault, line 166[#2]:
Stack (0xfe0020d0) (0xd0) Stack:  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
        00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
        00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
        00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
        00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
        ...
----------------Call Trace (0xfe0020d0) (0x0):
Infos: 0xfe0020d0 - 0
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<8021688c>] nopage_tlbl+0xf0/0x104
 [<80214520>] do_page_fault+0x40/0x360

Cpu 0

$ 0   : 00000000 9000ff00 00030001 00000000
$ 4   : fe002198 00000000 00000074 fe03e000
$ 8   : 9000ff00 1000001e 00000003 803eb10c
$12   : 00000000 00000000 fffffffe ffffffff
$16   : 00000000 80376ef8 fe03ff50 00000004
$20   : 00000000 00000000 00000000 00000000
$24   : 00000010 00000003
$28   : fe002000 fe0020d0 00000000 8021688c
Hi    : 00000240
Lo    : 000001f8
epc   : 80214520 do_page_fault+0x40/0x360     Not tainted
ra    : 8021688c nopage_tlbl+0xf0/0x104
Status: 9000ff02    KERNEL EXL
Cause : 00008408
BadVA : 00000000
PrId  : 00003430
Modules linked in:
Data bus error, epc == 802ce6d8, ra == 802cf58c
Oops in arch/mips/kernel/traps.c::do_be, line 333[#3]:
Stack (0xfe001e70) (0xe70) Stack:  00000400 fe001efc 9000ff00 ffffed6a 9000ff00 0000000a 80229464 00000000
        00000400 fe001f1c 9000ff00 00000000 0000002c 00000000 00000000 00000000
        802cf774 80229198 00000020 fe0020b8 80376eb1 803a343c 80376ea8 80229198
        0000002c 00000000 00000000 80229120 fe002020 803778e0 fe002020 00000000
        0000002c 00000000 00000000 80229120 00000000 c0000000 fe002020 803778e0
        ...
----------------Call Trace (0xfe001e70) (0x0):
Infos: 0xfe001e70 - 0
 [<80229464>] release_console_sem+0x88/0x158
 [<802cf774>] vscnprintf+0x14/0x30
 [<80229198>] vprintk+0x6c/0x218
 [<80229198>] vprintk+0x6c/0x218
 [<80229120>] printk+0x1c/0x28
 [<80229120>] printk+0x1c/0x28
 [<8020c6e4>] show_registers+0x58/0x7c
 [<8020c6bc>] show_registers+0x30/0x7c
 [<80206708>] handle_dbe_int+0x20/0x38
 [<8020c7bc>] __die+0xb4/0xcc
 [<8021464c>] do_page_fault+0x16c/0x360
 [<80214520>] do_page_fault+0x40/0x360
 [<8021688c>] nopage_tlbl+0xf0/0x104

Cpu 0

$ 0   : 00000000 9000ff00 ffffffff fe04016a
$ 4   : fe04016a fffffffe 80376eb1 fe001f1c
$ 8   : ffffffff 0000000a 00000003 803eb10c
$12   : 00000000 00000000 fffffffe ffffffff
$16   : 803eb104 fe04016a 803eb4fb 00000000
$20   : fe001f1c ffffffff 803eb0fc 00000400
$24   : 00000010 00000003
$28   : fe002000 fe001e70 00000000 802cf58c
Hi    : 00000240
Lo    : 000001f8
epc   : 802ce6d8 strnlen+0x10/0x40     Not tainted
ra    : 802cf58c vsnprintf+0x46c/0x640
Status: 9000ff02    KERNEL EXL
Cause : 0000841c
PrId  : 00003430
Modules linked in:
#2 lore raw

Hello,

Quoted 1 line · Manish Lachwani

This may or may not apply to your case. Is this board still the one that has the Marvell Discovery ethernet device? If yes, Marvell Discovery has its SRAM located at 0xfe000000. So, make a check in the ethernet driver or other board specific sources and see if there is any access to this SRAM location.

The DMA buffers and DMA buffer descriptors used for the serial driver are all located in the SRAM of the Marvell, which is mapped using a wired uncached TLB entry.

Here's the code that wires the entry :

add_wired_entry(ENTRYLO(NPP_BOARD_INTERNAL_SRAM_BASE),

                  ENTRYLO(NPP_BOARD_INTERNAL_SRAM_END),
                  NPP_BOARD_INTERNAL_SRAM_BASE,
                  PM_256K);

I would like to use ioremap() instead of wired TLB entries, but for the moment, I'm focusing on this crash.

Thanks,

Thomas

Signature · 4 lines
PETAZZONI Thomas - [email protected]
http://thomas.enix.org - Jabber: [email protected]
KOS: http://kos.enix.org/ - Lolut: http://lolut.utbm.info
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7
#3 lore raw

Hello !

What are these values: NPP_BOARD_INTERNAL_SRAM_BASE, NPP_BOARD_INTERNAL_SRAM_END and NPP_BOARD_INTERNAL_SRAM_BASE.

Also, what is ENTRYLO() defined as?

Thanks
Manish Lachwani

Quoted 21 lines · Thomas Petazzoni

Hello,

Quoted 1 line · Manish Lachwani

This may or may not apply to your case. Is this board still the one that has the Marvell Discovery ethernet device? If yes, Marvell Discovery has its SRAM located at 0xfe000000. So, make a check in the ethernet driver or other board specific sources and see if there is any access to this SRAM location.

The DMA buffers and DMA buffer descriptors used for the serial driver are all located in the SRAM of the Marvell, which is mapped using a wired uncached TLB entry.

Here's the code that wires the entry :

add_wired_entry(ENTRYLO(NPP_BOARD_INTERNAL_SRAM_BASE),

                  ENTRYLO(NPP_BOARD_INTERNAL_SRAM_END),
                  NPP_BOARD_INTERNAL_SRAM_BASE,
                  PM_256K);

I would like to use ioremap() instead of wired TLB entries, but for the moment, I'm focusing on this crash.

Thanks,

Thomas

#4 lore raw

Hello,

Quoted 1 line · Manish Lachwani

What are these values: NPP_BOARD_INTERNAL_SRAM_BASE, NPP_BOARD_INTERNAL_SRAM_END and NPP_BOARD_INTERNAL_SRAM_BASE.

#define NPP_BOARD_INTERNAL_SRAM_BASE 0xfe000000UL
#define NPP_BOARD_INTERNAL_SRAM_SIZE (256*1024)
#define NPP_BOARD_INTERNAL_SRAM_END \
(NPP_BOARD_INTERNAL_SRAM_BASE + NPP_BOARD_INTERNAL_SRAM_SIZE)

Do you think it's a problem related to the SRAM ?

Quoted 1 line

Also, what is ENTRYLO() defined as?

static inline unsigned long ENTRYLO(unsigned long paddr)
{
return ((paddr & PAGE_MASK) |
(_PAGE_PRESENT | __READABLE | __WRITEABLE | _PAGE_GLOBAL |
_CACHE_UNCACHED)) >> 6;
}

This code is taken from the jaguar_atx setup.c file.

Thanks,

Thomas

Signature · 4 lines
PETAZZONI Thomas - [email protected]
http://thomas.enix.org - Jabber: [email protected]
KOS: http://kos.enix.org/ - Lolut: http://lolut.utbm.info
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7
#5 lore raw

Hello Thomas,

Quick suggestion since I dont know all the details: Can you increase the
size of the space mapped to say 16 MB (some larget value than 256 KB)
and check if the bus error repeats?

#define NPP_BOARD_INTERNAL_SRAM_SIZE (16 *1024 * 1024)

Thanks
Manish Lachwani

Quoted 29 lines · Thomas Petazzoni

Hello,

Quoted 1 line · Manish Lachwani

What are these values: NPP_BOARD_INTERNAL_SRAM_BASE, NPP_BOARD_INTERNAL_SRAM_END and NPP_BOARD_INTERNAL_SRAM_BASE.

#define NPP_BOARD_INTERNAL_SRAM_BASE 0xfe000000UL
#define NPP_BOARD_INTERNAL_SRAM_SIZE (256*1024)
#define NPP_BOARD_INTERNAL_SRAM_END \
(NPP_BOARD_INTERNAL_SRAM_BASE + NPP_BOARD_INTERNAL_SRAM_SIZE)

Do you think it's a problem related to the SRAM ?

Quoted 1 line

Also, what is ENTRYLO() defined as?

static inline unsigned long ENTRYLO(unsigned long paddr)
{
return ((paddr & PAGE_MASK) |
(_PAGE_PRESENT | __READABLE | __WRITEABLE | _PAGE_GLOBAL |
_CACHE_UNCACHED)) >> 6;
}

This code is taken from the jaguar_atx setup.c file.

Thanks,

Thomas