LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Find Resources
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Openrisc > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: Matjaz Breskvar<phoenix@o...>
    Date: Thu Dec 30 17:40:20 CET 2004
    Subject: [openrisc] Bug in hello-uart
    Top
    * Patrick Loschmidt (Patrick.Loschmidt@o...) wrote:
    > Matjaz Breskvar schrieb:
    > >>_reset:
    > >> l.movhi r1,hi(_stack-4)
    > >> l.ori r1,r1,lo(_stack-4)
    > >>- l.addi r2,r0,-3
    > >>+ l.addi r2,r0,-4
    > >> l.and r1,r1,r2
    > >>
    > >> l.movhi r2,hi(_main)
    > >>I suppose that the -3 should do an alignment to 32bit words but this is
    > >>not the case. Because -3 is b1101 or 0xD so it should be -4 equal to
    > >>b1100 or 0xC. Could somebody please confirm this?
    > >it's readibility bug in any case. Since this is an example, let's do
    > >it really clearly:
    > >
    > >
    > >and now there is no confusion anymore.
    >
    > I found the example very usefull for my own start-up code, so I'm not
    > sure whether changing it to fixed addresses is a good idea, but I leave
    > it up to the maintainer ... ;-)

    ok. maybe my problem is that i'm looking at only this 5 lines
    of code, but i really don't get 'the fixed addresses'...

    as far as i can see (from this 5 lines of code, so i might see very wrong)
    the purpose of the code is to load the pointer to the stack into r1. since
    it may not be aligned to 0x4, we want to make sure it is. so
    to shave off the last two bits we now load the complete mask in the r2
    explicitly instead of the former shorter but kind of more difficult to see
    l.addi line... the code would now be:

    l.movhi r1,hi(_stack-4)
    l.ori r1,r1,lo(_stack-4)
    l.movhi r2,hi(0xfffffffc)
    l.ori r2,lo(0xfffffffc)
    l.and r1,r1,r2

    why wouldn't this be ok ?

    regards,
    p.

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.