I am working on mips32, gcc compiler with micro-mips optimization. Each core has it's own cache memory. Core A os - ThreadX, Core B os - rtos. I wish to pass pointer and size from Core A to Core B. Let's take a look at the following flow:
1. Core A(ThreadX): pass pointer and size to Core B
2. Core B(RTOS): write to pointer size bytes
3. Core B(RTOS): flush(pointer)
4. Core A(ThreadX): pointer cacheInvalidate(pointer)
5. Core A(RTOS): copy from pointer to buffer
I worked with unaligned address, seems that it caused some unexpected issues. After passing aligned address I failed to reproduce the issues. Do I have to work with an aligned address? Why? What behavior should I expect if I will pass unaligned address?